home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / BNU22SR1.ZIP / src / binutils.2 / ld / e_hppaos.c < prev    next >
C/C++ Source or Header  |  1993-05-30  |  3KB  |  114 lines

  1. /* An emulation for HP PA-RISC OSF/1 linkers.
  2.    Copyright (C) 1991 Free Software Foundation, Inc.
  3.    Written by Steve Chamberlain steve@cygnus.com
  4.  
  5. This file is part of GLD, the Gnu Linker.
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. #include "bfd.h"
  22. #include "sysdep.h"
  23.  
  24.  
  25. #include "ld.h"
  26. #include "config.h"
  27. #include "ldemul.h"
  28. #include "ldfile.h"
  29. #include "ldmisc.h"
  30.  
  31. extern  boolean lang_float_flag;
  32.  
  33.  
  34. extern enum bfd_architecture ldfile_output_architecture;
  35. extern unsigned long ldfile_output_machine;
  36. extern char *ldfile_output_machine_name;
  37.  
  38. extern bfd *output_bfd;
  39.  
  40.  
  41. #ifdef HPPAOSF
  42.  
  43. static void hppaosf_before_parse()
  44. {
  45.   static char *env_variables[] = { "HPPALIB", "HPPABASE", 0 };
  46.   char **p;
  47.   char *env ;
  48.  
  49.   for ( p = env_variables; *p; p++ ){
  50.     env =  (char *) getenv(*p);
  51.     if (env) {
  52.       ldfile_add_library_path(concat(env,"/lib/libbout",""));
  53.     }
  54.   }
  55.   ldfile_output_architecture = bfd_arch_hppa;
  56. }
  57. #else
  58. static void hppaosf_before_parse()
  59. {
  60.   char *env ;
  61.   env =  getenv("HPPALIB");
  62.   if (env) {
  63.     ldfile_add_library_path(env);
  64.   }
  65.   env = getenv("HPPABASE");
  66.   if (env) {
  67.     ldfile_add_library_path(concat(env,"/lib",""));
  68.   }
  69.   ldfile_output_architecture = bfd_arch_hppa;
  70. }
  71. #endif /* HPPAOSF */
  72.  
  73. static void
  74. hppaosf_set_output_arch()
  75. {
  76.   /* Set the output architecture and machine if possible */
  77.   unsigned long  machine = 0;
  78.   bfd_set_arch_mach(output_bfd, ldfile_output_architecture, machine);
  79. }
  80.  
  81. static char *script = 
  82. #include "hppaosf.x"
  83. ;
  84.  
  85.   
  86. static char *script_reloc =
  87. #include "hppaosf.xr"
  88.  ;
  89.  
  90.  
  91. static char *hppaosf_get_script()
  92. {
  93.    extern ld_config_type config;
  94.    if (config.relocateable_output)
  95.      return script_reloc;
  96.    return script;
  97.  
  98. }
  99.  
  100. struct ld_emulation_xfer_struct ld_hppaosf_emulation = 
  101. {
  102.   hppaosf_before_parse,
  103.   syslib_default,
  104.   hll_default,
  105.   after_parse_default,
  106.   after_allocation_default,
  107.   hppaosf_set_output_arch,
  108.   ldemul_default_target,
  109.   before_allocation_default,
  110.   hppaosf_get_script,
  111.   "hppaosf",
  112.   "elf-big"
  113. };
  114.